home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / AIncludes / MachineExceptions.a < prev    next >
Encoding:
Text File  |  1998-02-12  |  6.4 KB  |  197 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        MachineExceptions.a
  3. ;
  4. ;    Contains:    Processor Exception Handling Interfaces.
  5. ;
  6. ;    Version:    Technology:    Mac OS 8
  7. ;                Release:    Universal Interfaces 3.1
  8. ;
  9. ;    Copyright:    © 1993-1998 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__MACHINEEXCEPTIONS__') = 'UNDEFINED' THEN
  19. __MACHINEEXCEPTIONS__ SET 1
  20.  
  21.     IF &TYPE('__MACTYPES__') = 'UNDEFINED' THEN
  22.     include 'MacTypes.a'
  23.     ENDIF
  24.  
  25. ;  Some basic declarations used throughout the kernel 
  26.  
  27.  
  28.     IF TARGET_OS_MAC THEN
  29. ;  Machine Dependent types for PowerPC: 
  30. MachineInformationPowerPC RECORD 0
  31. CTR                         ds        UnsignedWide    ; offset: $0 (0)
  32. LR                         ds        UnsignedWide    ; offset: $8 (8)
  33. PC                         ds        UnsignedWide    ; offset: $10 (16)
  34. CR                         ds.l    1                ; offset: $18 (24)
  35. XER                         ds.l    1                ; offset: $1C (28)
  36. MSR                         ds.l    1                ; offset: $20 (32)
  37. MQ                         ds.l    1                ; offset: $24 (36)
  38. ExceptKind                 ds.l    1                ; offset: $28 (40)
  39. DSISR                     ds.l    1                ; offset: $2C (44)
  40. DAR                         ds        UnsignedWide    ; offset: $30 (48)
  41. Reserved                 ds        UnsignedWide    ; offset: $38 (56)
  42. sizeof                     EQU *                    ; size:   $40 (64)
  43.                         ENDR
  44. RegisterInformationPowerPC RECORD 0
  45. R0                         ds        UnsignedWide    ; offset: $0 (0)
  46. R1                         ds        UnsignedWide    ; offset: $8 (8)
  47. R2                         ds        UnsignedWide    ; offset: $10 (16)
  48. R3                         ds        UnsignedWide    ; offset: $18 (24)
  49. R4                         ds        UnsignedWide    ; offset: $20 (32)
  50. R5                         ds        UnsignedWide    ; offset: $28 (40)
  51. R6                         ds        UnsignedWide    ; offset: $30 (48)
  52. R7                         ds        UnsignedWide    ; offset: $38 (56)
  53. R8                         ds        UnsignedWide    ; offset: $40 (64)
  54. R9                         ds        UnsignedWide    ; offset: $48 (72)
  55. R10                         ds        UnsignedWide    ; offset: $50 (80)
  56. R11                         ds        UnsignedWide    ; offset: $58 (88)
  57. R12                         ds        UnsignedWide    ; offset: $60 (96)
  58. R13                         ds        UnsignedWide    ; offset: $68 (104)
  59. R14                         ds        UnsignedWide    ; offset: $70 (112)
  60. R15                         ds        UnsignedWide    ; offset: $78 (120)
  61. R16                         ds        UnsignedWide    ; offset: $80 (128)
  62. R17                         ds        UnsignedWide    ; offset: $88 (136)
  63. R18                         ds        UnsignedWide    ; offset: $90 (144)
  64. R19                         ds        UnsignedWide    ; offset: $98 (152)
  65. R20                         ds        UnsignedWide    ; offset: $A0 (160)
  66. R21                         ds        UnsignedWide    ; offset: $A8 (168)
  67. R22                         ds        UnsignedWide    ; offset: $B0 (176)
  68. R23                         ds        UnsignedWide    ; offset: $B8 (184)
  69. R24                         ds        UnsignedWide    ; offset: $C0 (192)
  70. R25                         ds        UnsignedWide    ; offset: $C8 (200)
  71. R26                         ds        UnsignedWide    ; offset: $D0 (208)
  72. R27                         ds        UnsignedWide    ; offset: $D8 (216)
  73. R28                         ds        UnsignedWide    ; offset: $E0 (224)
  74. R29                         ds        UnsignedWide    ; offset: $E8 (232)
  75. R30                         ds        UnsignedWide    ; offset: $F0 (240)
  76. R31                         ds        UnsignedWide    ; offset: $F8 (248)
  77. sizeof                     EQU *                    ; size:   $100 (256)
  78.                         ENDR
  79. FPUInformationPowerPC    RECORD 0
  80. Registers                 ds.b    32 * UnsignedWide.sizeof ; offset: $0 (0)
  81. FPSCR                     ds.l    1                ; offset: $100 (256)
  82. Reserved                 ds.l    1                ; offset: $104 (260)
  83. sizeof                     EQU *                    ; size:   $108 (264)
  84.                         ENDR
  85.  
  86. ;  Exception related declarations 
  87.  
  88. kWriteReference                    EQU        0
  89. kReadReference                    EQU        1
  90. kFetchReference                    EQU        2
  91. writeReference                    EQU        0                    ; Obsolete name
  92. readReference                    EQU        1                    ; Obsolete name
  93. fetchReference                    EQU        2                    ; Obsolete name
  94. ; typedef unsigned long                 MemoryReferenceKind
  95.  
  96. MemoryExceptionInformation RECORD 0
  97. theArea                     ds.l    1                ; offset: $0 (0)
  98. theAddress                 ds.l    1                ; offset: $4 (4)
  99. theError                 ds.l    1                ; offset: $8 (8)
  100. theReference             ds.l    1                ; offset: $C (12)
  101. sizeof                     EQU *                    ; size:   $10 (16)
  102.                         ENDR
  103.  
  104. kUnknownException                EQU        0
  105. kIllegalInstructionException    EQU        1
  106. kTrapException                    EQU        2
  107. kAccessException                EQU        3
  108. kUnmappedMemoryException        EQU        4
  109. kExcludedMemoryException        EQU        5
  110. kReadOnlyMemoryException        EQU        6
  111. kUnresolvablePageFaultException    EQU        7
  112. kPrivilegeViolationException    EQU        8
  113. kTraceException                    EQU        9
  114. kInstructionBreakpointException    EQU        10
  115. kDataBreakpointException        EQU        11
  116. kIntegerException                EQU        12
  117. kFloatingPointException            EQU        13
  118. kStackOverflowException            EQU        14
  119. kTaskTerminationException        EQU        15
  120. kTaskCreationException            EQU        16
  121.     IF OLDROUTINENAMES THEN
  122.  
  123. unknownException                EQU        0                    ; Obsolete name
  124. illegalInstructionException        EQU        1                    ; Obsolete name
  125. trapException                    EQU        2                    ; Obsolete name
  126. accessException                    EQU        3                    ; Obsolete name
  127. unmappedMemoryException            EQU        4                    ; Obsolete name
  128. excludedMemoryException            EQU        5                    ; Obsolete name
  129. readOnlyMemoryException            EQU        6                    ; Obsolete name
  130. unresolvablePageFaultException    EQU        7                    ; Obsolete name
  131. privilegeViolationException        EQU        8                    ; Obsolete name
  132. traceException                    EQU        9                    ; Obsolete name
  133. instructionBreakpointException    EQU        10                    ; Obsolete name
  134. dataBreakpointException            EQU        11                    ; Obsolete name
  135. integerException                EQU        12                    ; Obsolete name
  136. floatingPointException            EQU        13                    ; Obsolete name
  137. stackOverflowException            EQU        14                    ; Obsolete name
  138. terminationException            EQU        15                    ; Obsolete name
  139. kTerminationException            EQU        15                    ; Obsolete name
  140.     ENDIF    ; OLDROUTINENAMES
  141. ; typedef unsigned long                 ExceptionKind
  142.  
  143. ExceptionInfo            RECORD 0
  144. memoryInfo                 ds.l    1                ; offset: $0 (0)
  145. sizeof                     EQU *                    ; size:   $4 (4)
  146.                         ENDR
  147. ExceptionInformationPowerPC RECORD 0
  148. theKind                     ds.l    1                ; offset: $0 (0)
  149. machineState             ds.l    1                ; offset: $4 (4)
  150. registerImage             ds.l    1                ; offset: $8 (8)
  151. FPUImage                 ds.l    1                ; offset: $C (12)
  152. info                     ds        ExceptionInfo    ; offset: $10 (16)
  153. sizeof                     EQU *                    ; size:   $14 (20)
  154.                         ENDR
  155. ExceptionInformation    RECORD 0
  156. f                         ds        ExceptionInformationPowerPC
  157. sizeof                     EQU *                    ; size:   $14 (20)
  158.                         ENDR
  159.  
  160.  
  161. MachineInformation        RECORD 0
  162. f                         ds        MachineInformationPowerPC
  163. sizeof                     EQU *                    ; size:   $40 (64)
  164.                         ENDR
  165.  
  166.  
  167. RegisterInformation        RECORD 0
  168. f                         ds        RegisterInformationPowerPC
  169. sizeof                     EQU *                    ; size:   $100 (256)
  170.                         ENDR
  171.  
  172.  
  173. FPUInformation            RECORD 0
  174. f                         ds        FPUInformationPowerPC
  175. sizeof                     EQU *                    ; size:   $108 (264)
  176.                         ENDR
  177.  
  178.  
  179.  
  180. ;  
  181. ;    Note:    An ExceptionHandler is NOT a UniversalProcPtr.
  182. ;            It must be a PowerPC function pointer with NO routine descriptor. 
  183. ;
  184.  
  185. ;  Routine for installing per-process exception handlers 
  186. ;
  187. ; pascal ExceptionHandler InstallExceptionHandler(ExceptionHandler theHandler)
  188. ;
  189.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  190.         IMPORT_CFM_FUNCTION InstallExceptionHandler
  191.     ENDIF
  192.  
  193.     ENDIF    ; TARGET_OS_MAC
  194.  
  195.     ENDIF ; __MACHINEEXCEPTIONS__ 
  196.  
  197.